Computer system and method for analyzing data sets and generating personalized recommendations

ABSTRACT

Embodiments of the invention relate to a computer-implemented method and system for generating personalized recommendations for a target user based at least on stored data about the target user. The method comprises obtaining, at the server computer, data from a plurality of data sources, including entity data associated with a plurality of entities, stored in an entity database, or personal data associated with a plurality of users, stored in a user database. The personalized recommendations system then merges the entity data or personal data and maps the entity or personal data to a corresponding entity or target user, respectively. The entity or personal data is differentiated, a relevance is determined, a weight is assigned to the data and corresponding source to canonicalize the data, the respective databases are updated with the corresponding data, and then a set of personalized recommendations to the target user is generated using the updated databases.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority from co-pending U.S. Provisional Patent Application No. 61/393,800 filed Oct. 15, 2010 entitled “Generating Personalized Recommendations”.

The present disclosure may be related to the following commonly assigned U.S. Provisional Patent Application No. 61/393,793 filed Oct. 15, 2010 entitled “Providing Personalized Recommendations”.

The respective disclosures of these applications/patents are incorporated herein by reference, as if set forth in full in this document, for all purposes.

FIELD OF THE INVENTION

The present invention relates to recommendation systems in general and in particular to recommendation system that generates personalized recommendations for users, via user devices, in order to present informative and intuitive recommendations.

BACKGROUND OF THE INVENTION

The Internet has become a useful source of information relating to goods and services, but because so many users and companies are connected to the Internet and providing information of their own, it is difficult to find relevant information among all available information. One area of information is in recommendations. As individuals and groups are now able to connect to the Internet and retrieve information from websites and via apps, and do so perhaps while in transit towards a geographic area of interest, they come to expect the ability to find information about goods and services being offered.

One source of information is in the form of websites hosted by or for providers. As used herein, “website” refers to a collection of one or more web pages displayable by a browser or other web client, the one or more web pages being hosted on a web server (i.e., a computer coupled to the Internet, or other network over which communication occurs) that responds to requests for pages hosted thereon. An example might be a restaurant that generates information about its hours, pictures of its dining room, contact information, history, menus and other offerings, then puts that information into a suitable form (such as HTML pages, dynamically generated pages, etc.), stores those pages in electronic storage accessible by the web server (hosted by the restaurant or perhaps a company that specializes in web presence that provides such services to the restaurant), and then serves those pages as client devices request pages. The information might also be presented in another form, such as data supplied to an app on the client device rather than a generic browser on the client device.

However, the restaurant gets the information to interested users, it is still limited to information sourced by that restaurant. A number of websites have been set up to collect information from other customers of a vendor of goods or services and provide reviews and comments and other details to other customers or potential customers. For example, there might be a website that focuses on hotels, another on restaurants, another on home repair, or a general one. However, these websites might just have too much information to be useful to a user searching for relevant recommendations.

An improved recommendations system is desirable.

BRIEF SUMMARY OF THE INVENTION

Embodiments of a computer-implemented method and system for generating personalized recommendations for a target user based at least on stored data about the target user according to aspects of the present invention are described. The system may comprise a server computer, comprising a processor and a computer-readable medium, containing code executable by the processor to implement the method.

One method comprises obtaining, at the server computer, data from a plurality of data sources. The data may be entity data associated with a plurality of entities, or personal data associated with a plurality of users. The data is stored at the server computer, wherein the entity data is stored in an entity database, and the personal data is stored in a user database. The personalized recommendations system then merges the entity data in the entity database from the plurality of data sources and maps the entity data to a corresponding entity. The same may be done for the personal data in the user database from the plurality of data sources to map to a target user. The entity data or personal data is differentiated and a relevance is determined between the data and the data source by cross-referencing the data with the data source. A weight is assigned to the data and corresponding data source, thereby canonicalizing the data. Then, the respective databases are updated with the corresponding data. The method then further comprises generating a set of personalized recommendations to the target user using the updated entity database and the updated user database.

The following detailed description together with the accompanying drawings will provide a better understanding of the nature and advantages of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

A further understanding of the nature and advantages of the present invention may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.

FIG. 1 is a block diagram of a personalized recommendation system according to aspects of the present invention.

FIG. 2 is a block diagram of a location data pipeline that might be used to generate entity data.

FIG. 3 is a block diagram of a sentiment generation pipeline that might be used to generate sentiment information about information elements.

FIG. 4 is a block diagram of a search pipeline that might be used to generate results for use in user recommendations.

FIG. 5 is a block diagram of a modularized personal recommendations system.

FIG. 6 is an illustration of a user display of categories of selections, with the categories determined based on personalized recommendation system results.

FIG. 7 is an illustration of a user display of selections of goods and services, determined based on personalized recommendation system results.

FIG. 8 is an illustration of a user display of selections of goods and services, determined based on personalized recommendation system results, in an alternative presentation.

DETAILED DESCRIPTION OF THE INVENTION

An improved recommendation system is described herein. In order to provide a context for describing embodiments of the present invention, embodiments of the invention will be described herein with reference to a user device that receives user recommendations. Those skilled in the art will recognize, however, that the present invention is not limited to such embodiments.

It should be understood that, given the complexity of the operations performed, the invention is implemented using computing elements and may also include communication elements that convey data between disparate locations.

Personalized Recommendations

In FIG. 1, an exemplary personalized recommendations system according to an embodiment of the invention is shown. The personalized recommendations system 160 may be coupled to a plurality of users, such as a primary user 100, secondary user 102, or any number of users 104. There may be relationships between specific users, for example, the primary user 100 and secondary user 102 may be friends, family members, or co-workers. The plurality of users may be coupled to the personalized recommendations system 160 through associated user devices 110, 112, and 114. User devices may include mobile phones (e.g., a Blackberry™ phone, an iPhone™ device, an Android™ device), tablets (e.g., an iPad™ tablet), or other electronic devices.

The personalized recommendations system 160 may obtain inputs from any number of users 100, 102, 104, registered with the personalized recommendations system 160. The users 100, 102, and 104 may be interconnected and have relationships with one another. The inputs may be transmitted through the user devices 110, 112, 114 via an application. The user devices 110, 112, 114 may be connected to the personalized recommendations system 160 through the internet, a wireless network, a telecommunications network, or any suitable communications network. For example, the primary user 100 may use the primary user device 110 to download and install an application issued by the personalized recommendations system 160. Through the application, the primary user 100 may edit personal ratings for entities, such as venues and restaurants, and other personal preferences, such as cuisine, type of food, price range, location, distance from current location, etc. The primary user 100 may also provide feedback items or data through the application to respond to recommendations, to add or remove entities, and/or rate an experience at an entity. In other embodiments of the invention, entities may include merchants and service providers.

Additional inputs to the personalized recommendations system 160 may come from external data sources, for example, a social network computer system such as the Facebook™ computer system 140(A), a public messaging system such as the Twitter™ messaging system 140(B), and/or any number of other data sources 140(N) via the user accounts 100(A), 100(B), 102(A), 102(B) with the data sources and/or user devices 110, 112. The external data sources may also provide raw location data of the users, for example, through a “check-in” through system 140(A), system 140(B), or other social networking provider system capable of providing raw location data.

FIG. 2 is a block diagram of a location data pipeline 200, which illustrates, according to embodiments of the invention, how location data is processed by the personalized recommendations system 160. In an embodiment of the invention, the location data pipeline 200 may be used to build a database of entities. The latest data from different sources 201-1, 201-2, 201-N, may be raw location data from the external data sources of FIG. 1. The raw location data may be obtained through a GPS interface or other locating system. A user may also provide direct feedback regarding the user's location or entities.

The personalized recommendations system might include a data canonicalizer 210 that maps vague, duplicate and/or inconsistent references to entities (such as restaurants, shops and other businesses) that are “canonical” in that different phrasings, spellings, wording, etc. that actually refers to the same place all map to an entity record for that one place. Data canonicalization may be performed on the location data from different sources 201-1, 201-2, 201-N (raw location data) and user feedback 202 (un-raw location data). In various embodiments, the personalized recommendations system normalizes and/or canonicalizes data (both raw and un-raw) across many different data sources about entities including physical places, events, and activities. Canonicalizing the entities includes a de-duplication process that fuses the information from the many data sources into a single dataset, producing a higher quality set of data than any of the individual data sources.

After the data is canonicalized, there may be new entities introduced, for example, the personalized recommendations system may propose new entity data 204. The location data associated with new entities or entities may be mapped to existing, or old, location data. The old to new mapping 250 may result in resolved entity data 208, which may have removed duplicated entities from the location data from the difference sources. Therefore, the resolved entity data 208 may have a set of unique entities.

The user feedback 202 may comprise direct updates 230 to the entity database by providing current entity data 206 from the user. Updates 230 may include adding or removing an entity, or editing information associated with the entity, for example hours of operation. The update 230 is entered in a database of current entity data 206, or an entity database. The resolved entity data 208 may also be used to add, remove, and edit entities 270 within the current entity data 206. Proposing new entity data 204 may also be used to add, remove, and edit entities 270 within the current entity data 206, to result in building the database of entities with updated information, unique instances, and associated user data.

The personalized recommendations system cross references all of the meta-data about an entity to perform the canonicalization, for example when determining if multiple locations across multiple data sources are the same, and should all map to the same canonical place, the personalized recommendations system may look at names, addresses, phone number, type of place, etc. The personalized recommendations system may also improve the meta-data about the canonical places, by incorporating different information from different sources, or functions of multiple sources. For instance, if one source always has the correct name, and another source always has the correct type, the system's canonical entity may use the name and type from different sources. The personalized recommendations system may use the canonical dataset when listing information about entities in a set of recommendations.

When performing canonicalization, the personalized recommendations system may preserve the mapping between each entity in the noisy datasets (the mapping may or may not be one-to-one), to the entity in the canonical dataset. The personalized recommendations system may use this mapping for cross referencing other relevant data from disparate sources and mapping it to a single canonical source. For example, referring to FIG. 1, if an entity from data source 140-A has a number of check-ins associated with a canonical entity, and an entity from data source 140-B also has a number of reviews that have been associated with the same canonical entity, the check-ins and reviews may all be associated with the associated canonical entity.

The canonicalization may work in many passes, where multiple data sources are merged simultaneously, or may be merged sequentially, or a hybrid of both solutions. Machine learning approaches may be used to learn how to merge these data sources, and may model which meta-data is more reputable from which source.

Because the canonicalization step may preserve a mapping from the entities in the noisy datasets to the canonical dataset, personalized recommendations system may crawl and pull feeds and other textual, video, visual, and auditory data from data sources about the noisy datasets, which in turn may be used to understand metrics of the relative importance of different entities in the canonical dataset. These data sources contain direct metrics of importance of individual entities including check-ins, reviews, and messages. These services also contain or may cross reference indirect information from other services such as the page rank of a website associated with a place. Also, rather than just directly using these metrics, other functions of these metrics (both implicit and explicit), such as the speed at which check-ins or messages about an entity are coming in, other functions of subsets of check-ins or messages, check-ins or messages of sub-classes of individuals, etc, rather than just using aggregates. These metrics may be used as proxies for popularity, or could be fed into algorithms to learn popularity scores.

FIG. 3 is a block diagram of a real-time data pipeline 300 according to embodiments of the invention, which illustrates how real-time data, such as textual data, is processed by the personalized recommendations system 160. Real-time data may include textual data, such as status updates 301-A from a social networking system, such as the Facebook system, or messages from a public messaging system, such as “tweets” 301-B from the Twitter messaging system. The textual data may be processed using natural language processing 310, to parse and interpret the text and its context. For example, a status update mentioning “Don Giovanni's” could refer to a user named Don Giovanni, or it could refer to an Italian restaurant chain that operates under the Don Giovanni trade name. The natural language processing 310 step will analyze the context of the status to determine whether an entity, such as a venue or restaurant is mentioned. If through natural language processing 310 it is determined that an entity has been mentioned, then an inferred check-in 302 is associated with the real-time data from the user.

Together with location data such as a direct check-in 301-C that provides raw location data, along with the inferred check-in 302 determined by real-time textual data, a sentiment analysis 330 is performed. The sentiment analysis 330 maps the venue from the raw location data (e.g., check-in) with the venue from the real-time data processed using natural language processing (e.g., inferred check-in) to determine whether the user had a positive or negative experience. A real-time textual data associated with a positive experience, for example, “I had the best burger at ABC Restaurant!” would result in a positive sentiment 304 associated with venue ABC Restaurant determined by the sentiment analysis 330. A real-time textual data associated with a negative experience, for example, “The service could be better at XYZ Restaurant . . . ” would result in a negative sentiment 306 associated with venue XYZ Restaurant determined by the sentiment analysis 330.

The sentiment analysis can be general or specific to particular dimensions. For example the textual data “The service was terrible, but the food was great at XYZ Restaurant . . . ” can be analyzed by Sentiment Analysis to understand that in the Food Quality dimension there was positive sentiment, but in the Service dimension there was negative sentiment. In other embodiments, real-time data may include video, audio, or other media data to be processed for content.

In various embodiments, the personalized recommendation system employs methods to make recommendations more personalized. Conventional approaches such as collaborative filtering techniques generally use explicit ratings given by users. The personalized recommendations systems also may model implicit information such as check-ins, functions of check-in rate, or discussion and sentiment about specific entities on services such as Facebook™. For physical locations or events, the personalized recommendations system may use GPS in addition with other signals, such as indication to attend an event, to determine a location someone has visited without their explicit statement to do so. If the user is not explicit, noisy information about the GPS and the GPS' accuracy may still be used to improve results. For example, in the simplest case, if the GPS does not have sufficient resolution to know which of 4 stores a user is at, but the user has checked in at one of the 4 stores before, it is much more likely the user is at the entity the user has checked in. As a more sophisticated example, if personalized recommendations system have 10 different GPS readings from different periods of time, personalized recommendations system may look at the intersection of those readings, factoring in GPS noise, to determine where the user has actually been going.

Other information that may be used to improve personalized recommendations is data related to affinity groups. These groups may include, for example, friends on social networks, explicit groups such as Facebook™ groups, or implicit affinity by looking at the frequency of discussion between individuals, such as Facebook™ wall posts or cell-phone text messages. The implicit membership groups may also be as general as being part of an implicit population due to observations by the system, for instance, by noticing that the user is in the group of users that like the opinions of experts. These types of recommendations may also have different classes of weights. For instance, if a specific user is more likely to listen to his or her family than friends, a user family member's recommendation would have a higher weight to the user. One example of how personalized recommendations system could determine this would be observing the types of recommendations that a user acts upon, for instance by seeing if a user made a reservation at a restaurant, and observing that there is a trend that when family members gave positive recommendations, then the user was more likely to select the entity than if another type of user gave the recommendation. One example about who should be treated as family would be looking at associations through services such as Facebook™, or other social networking sites, which may have this personal and/or stored data explicitly.

An example of an approach implicitly determining affinity is by having the system collect background GPS information of two users, for instance by getting information from a user's phone at specified time intervals or triggered by other more sophisticated models. By cross-referencing two users who are at the same location, that the system understands are related according to a social graph (e.g., which personalized recommendations system mean in the general sense of modeling affinity between individuals not necessarily in the “Facebook™” sense), personalized recommendations system may understand which groups of users spend time with one another. By social graph, the personalized recommendations system means a model of a mapping between users who interact with one another. This modeling may also model simple relationships such as whether a pair of users are co-workers, or more sophisticated information such as how often two users interact, or how likely they are to take other people's recommendations.

The personalization of recommendations also may be improved by automatically clustering based on similarity traits. This is another method of modeling affinity groups. Associating similar users into clusters may use explicit information, such as demographics or shared music tastes from a Facebook™ profile, or implicit information, such as the different distributions of common word frequencies in Twitter™ messages between users. For example, if two Twitter™ users both use the words “hella” or “wicked,” these may be signifiers about geography, which in turn are signifiers about similarity between users.

By monitoring the decisions of individuals based on their interactions with personalized recommendations and personalized media objects associated with the personalized recommendations, the personalized recommendations system may also improve its personalization. It may infer preference based on which individual items, or classes of items that have had action taken upon them. These preferences may have different weights based on different actions taken. For example, given a restaurant recommendation, clicking through to get more information about a restaurant tells the system that the recommendation was interesting, the duration on which the user spends viewing the restaurant information and the other interactions tell still more information about how compelling the recommendation is, and taking further action such as calling an establishment, or making a reservation indicates an even higher level of relevance for a recommendation. In various embodiments, the foregoing actions and/or interactions may be observed at least in part by a client application running on a smart phone or other device used to provide the recommendations. The monitoring of interactions may include higher level interactions than just specific recommendations, it may look at groups of recommendations, which may or may not be categorized explicitly.

The personalized recommendations system may fuse many of these techniques into a single approach of popular, socially relevant, and personalized recommendations.

The personalized recommendations system describe a system for using Natural Language Processing (NLP), specifically named entity recognition (NER) and sentiment analysis, on user generated messages, such as those on Facebook™, and Twitter™, to understand the content of messages. The personalized recommendations system first perform name-entity recognition to understand the mapping between a message, for instance a short-form message on Facebook™, and the entity in the personalized recommendations system, such as a location or event, which the message is about. The personalized recommendations system may then perform sentiment analysis on the messages to understand whether the experience at a given entity was a positive or negative experience, and to what degree. The sentiment analysis may go further to understand why the user had a good time, for instance great food, good ambiance, etc. for a restaurant.

The personalized recommendations system applies this NLP approach in different areas of the personalized recommendations. Firstly, the personalized recommendations system use this information as additional information to be fed into our recommendation engine to make personalized recommendations, especially given the knowledge of the relevancy of the message to the individual, using the affinity group approach previously described. Secondly, personalized recommendations system may surface the messages, and automatically group them into areas of a product that describe information about why a user should do something, or shouldn't do something. The system may use explicit information a user has provided, to correct the system's mistakes of an incorrect categorization and improve learning approaches, such as the named-entity recognition or sentiment analysis. For instance, the user may tag a message as being positive sentiment, rather than negative. The system may also perform implicit modeling of relevant messages, for instance, by showing different sets of messages to different users, and seeing how the presence (or lack) of specific messages affect decision making of users, or groups of users. The system may learn the importance of different types of information to each individual's decision making, and may use the importance of those metrics when making the recommendation calculations, or determining which results to show to a user.

FIG. 4 is a block diagram of a search pipeline 400 according to embodiments of the invention. In another embodiment of the invention, the user may have a query to make the personalized recommendations even more specific and targeted. In addition to the previous data (e.g., raw location data, un-raw location data, real-time data) obtained by the personalized recommendations system 160, the user may also enter a query 401-A. Examples of queries may include a name of a restaurant, desired location, price range, or cuisine. The query 401-A may be entered into a retrieval module 410 in the search pipeline 400 of the personalized recommendations system 160.

Other inputs into the retrieval module 410 may include current entity data 401-B, user and/or “high affinity” user data 401-C, and filters 401-D. User data, including “high affinity” user data, may include demographic information, such as age, residence, gender, ethnicity, and other information. “High affinity” user data may include cluster demographic data, for example, observed trends of preferred venues amongst a cluster demographic, such as age or gender. For example, past user data may show that males aged 21-29 enjoy going to venues that serve beer, whereas women in the same age group prefer venues that serve cocktails. The target user entering the query may have demographic data that may be matched with a cluster demographic to determine the target user's affinity to entities with other users within the same cluster demographic. In other embodiments the target user may have relationships with other users, which may affect the target user's preferences. For example, the target user's significant other may have an influence on the entities patronized by the target user because they are romantically involved and spend a lot of time doing activities together, making the significant other a “high affinity” user to the target user, thus retrieving the “high affinity” user data may also occur and be processed.

Other examples of “high affinity” users may be users who have many connections on social networking sites, and/or are considered highly influential amongst a group of friends. A more popular user may have a higher influence on other users, thus the popular user's activities and status updates, including the entities the popular user patronizes, may be exposed to more friends and connections through the popular user. Additionally, a “high affinity” user may be an expert in a particular field or a celebrity, and therefore may have followers on various social networking sites (e.g., Twitter). For example, a food critic for the New York Times or a movie star may have numerous followers and fans who would be influenced by the food critic or movie star's activities and status updates.

The retrieval module 410 may produce several outputs, such as parameters for query relaxation 402, a range of query 403, and a summary of inputs 404. Parameters for query relaxation 402 may include parameters to expand the original query 401-A of the user. For example, if the user entered a specific restaurant name, but was not sure how to spell it or spelled it incorrectly, the retrieval module 410 may relax the query to include other spellings to determine the restaurant that the user is intending to search for. A range of query 403 may be determined by the retrieval module from the input data 401, for example, a query to search for Chinese food. The retrieval module 410 may also result in a summary of the inputs 404, the inputs including the query 401-A, current entity data 401-B, user data 401-C, and filters 401-D.

After consideration of the parameters for query relaxation 402, range of query 403, and the summary of inputs 404, a set of recommendations are produced for the search. A ranking 430 may be performed on the set of recommendations to produce final results 405 in response for the search query by the user. The results 405 may also include result preview content 406, such as personalized and customized summaries of the venues recommended, or noting “high affinity” users' opinions of the venues recommended. For example, the result preview for an entity may be a personalized summary customized to inform the user that the entity is rated highly by the user's significant other. Based on previous data retrieved, processed, and stored relating to the user, the personalized recommendations system 160 may determine that the user particularly likes burgers, so in the personalized summary of a restaurant, may specifically mention reviews about the restaurant's burgers. The result preview content 406 of a suggested recommendation may be designed to entice the user in a personalized and customized manner to increase the probability of a desired response, which is an indication of interest in the suggested recommendation.

The indication of interest may include a request for more information regarding the suggested recommendation for an entity (e.g., clicking on a link to a website for the entity, browsing the summary or reviews of the entity, making a phone call to the entity), a purchase transaction with the entity (e.g., making a purchase or payment), or any other future transaction with the entity (e.g., visiting the entity). In other embodiments, the indication of interest or relevance may also be determined by detecting whether the user has viewed additional information regarding the suggested recommendation for an entity, how many times the user has viewed the information, and how long the user has viewed the information. The additional information may be meta-data about the entity (e.g., hours of operation, location), a personalized summary about the entity, or a personalized explanation about why the entity has been recommended to the user.

The personalized recommendations system may model the relationships between users as a graph. In this graph, users are nodes. Edges represent relationships between people. Directional edges may model uni-directional relationships, such as if user A follows user B on Twitter™. The personalized recommendations system may represent a symmetric relationship like friends have on Facebook™, as two, directional edges, or a unidirectional edge. These relationships may be about different associations than social affiliations, such as an expertise graph where an edge from user A to user B means that user A believes user B may be an expert. There may also be weights on these edges, which for example, might represent the confidence in someone's expertise, or how friendly two users are. For this representation, personalized recommendations system may compute different statistics about the users graph. This could measures of people's expertise or of people's popularity, which in turn may be used as a proxy for ability to influence others.

These measures may be computed 1) globally by examining the entire graph, 2) about a subset of the graph, for instance based on a) the friends-of-friends for a specific individual, or b) a subset of the graph based on other similarity measures. This graph may be represented as a Markov model. This graph may be analyzed by performing a random walk from one node representing a user, to another node, with the probability of transitioning to a new state to be proportional with outgoing edge weight. By computing the stationary distribution over the states on this graph, personalized recommendations system may compute the proportional relevance of each user given the model, where depending on the model, this relevance may be interpreted as a user's expertise or popularity. These relationships may be used to modify the order of results, or to determine who to associate with a specific recommendation to convince a user to take action on that recommendation. For example, the system could use this model to know that a friend of yours is well regarded as a coffee expert, so if the personalized recommendations system are recommending coffee, using the coffee expert's comments or ratings about a specific coffee shop could be influential in helping a user make his or her decision. In turn, if this will be more convincing, in a list of results provided, the personalized recommendations system may rank this recommendation, with the coffee expert's comments, higher in the list, as it will be more compelling to the user.

FIG. 5 is an exemplary personalized recommendations system 160 according to embodiments of the invention. The personalized recommendations system 160 may be operated on a server computer 700, comprising a processor 700(a) and a computer readable medium 700(b). There may be several databases to store data, for example, an entity database 730(a), a feedback database 730(b), a personal data database 730(c), and a media object database 730(d). Stored in the entity database 730(a) may be normalized and canonicalized data relating to entities, including entity meta-data (e.g., location, hours of operation, specialty, rating). Entity meta-data may include any sub-category of data related to the entity. The feedback database 730(b) may store feedback data from a plurality of users. Any user interaction with the personalized recommendations system, or application issued by the personalized recommendations system, may be included in the feedback data stored in the feedback database 730(b). The personal data database 730(c) may store personal data obtained from a plurality of users, such as real-time data from social networking sites (e.g., tweets, status updates), and stored data related to a plurality of users, such as user preferences and settings (e.g., gender, dietary restrictions). The real-time data may be explicit or implicit, and may include text, images, video, audio, or other media. The stored data may be directly obtained from the user or may be obtained from external data sources, such as a social networking site associated with the user. The personalized recommendations system 160 may also include a media object database 730(d), storing media objects, such as high resolution photos. The media objects may be associated with entities, recommendations, and/or the target user.

The computer readable medium 700(b) of the personalized recommendations system 160 may comprise software modules, containing code executable by the processor 700(a). Exemplary modules included in the computer readable medium 700(b) may include, but are not limited to, a normalization and canonicalization module 701, a natural language processing module 702, a sentiment analysis module 703, a mapping and retrieval module 704, a ranking module 705, and a filters module 706. The processes of these exemplary modules have been described previously for FIGS. 2-4.

The personalized recommendations system 160, to communicate with external data sources, social networking sites, and users, may include a network interface 720. The network interface 720 includes hardware and software that enables the personalized recommendations system 160 to transmit and receive data over the Internet or any other communications network (e.g., telecommunications network, cable, radio).

Presentations on User Devices

In various embodiments, the perceived relevance and attractiveness of recommendations are enhanced by showing high-quality photos that are either 1) from/about the specific content being recommended, or 2) related to the type of recommendation being made, for instance showing images of ice cream if a Ben and Jerry's ice cream shop is recommended. Examples of interfaces that the personalized recommendations system might use are high-quality photos, as shown in FIGS. 6-8.

FIG. 6 is an exemplary screenshot of a user interface 600 provided by the personalized recommendations system according to embodiments of the invention. The user interface 600 for a search may include media objects (e.g., high resolution images) 610(a) and 610(b), related to general categories, such as cuisine type 640. The user may enter a query into a search field 620, and specify filters 630 to narrow down the search. The user interface 600 may include other icons, such as a profile icon 670 to edit personal and profile settings. Additional icons may include a refresh icon 650 to refresh the search, screen, or recommendations, and a pin icon 660 to mark a recommendation.

These photos may also be used with other recommendation information to custom-tailor the experience to the tastes and preferences of the individual. For example, if personalized recommendations system are recommending a bar and know the user who is receiving the recommendation is a heterosexual male, it may be more incentivizing to show a photo of an attractive woman at a bar, rather than an attractive man. As the personalized recommendations system learn more about what incentivizes people, this approach could be extended to modify the imagery based on the experience. For instance, the system could determine whether an attractive user of the opposite sex, or a tasty mixed drink is more likely to drive a user to take action on and provide feedback data in response to a recommendation.

When making this determination, the system may use very different factors. For example, if using global popularity, types of photos are analyzed to determine the most compelling in general, for a category, or for an individual entity. Other examples of features include more population relevant information about the user such as demographic information, to more personalized information such as which types of photos have induced them to choose recommendations before by observing their click stream. Methods that fuse global, population-relevant, or individual history may all be fused together when making this distinction. The use of these photos may be used for many different purposes including examples such as 1) driving users to take action on organic recommendations, organic recommendations being recommendations determined by the personalized recommendations system as the most relevant, rather than paid-recommendations like ads, 2) driving users to click on advertisements, 3) driving users to click on something for lead-generation, 4) driving a transaction such as a purchase or a recommendation, and/or 5) driving users to go to a location. The personalized recommendations system may also couple text with the photo or other media object, messaging important rationale, facts, opinions, or tag-clouds, which a user might use to take action on a recommendation. The use of images may pervade the experience in implicit ways, in addition to explicit ways of selling a user on making a decision. As illustrated in FIG. 8, showing an alluring photo as a background image, may also be used as subtle hints to induce users to make decisions.

In contrast to conventional search-based results, the system also supports discovery experiences, where the number of recommendations may range from a single recommendation to a large number of recommendations, as shown in FIG. 7. Discovery recommendations address situations where rather than the user knowing what the user is looking for, the user would like to explore many options. Discovery recommendations may take many forms. For physical places, recommendations do not need to necessarily be just about the entity itself, but could be about meta-data about the place, for instance the type of users who are at an establishment, or the ambiance. The discovery may be motivated by other related habits or activities, such as recommendation of concerts based on known music tastes. This discovery may also be scoped by social context, for instance by telling the system you wish to participate in an activity with a specific person, but the system should determine what. This could be scoped even further, to articulate a person, and a scoped activity, for instance user X, eating a meal. It response the system may recommend, for example, a restaurant the user and (if known) the user X would like, at a location convenient to both. This discovery may be more fine-grained than just an activity, but a specific experience at a locale, for instance getting a specific drink at a specific bar. The mechanisms for discovery may also be more geared more toward an exploration format, rather than an explicit list of suggestions. For instance, the user could request more recommendations similar to a specific recommendation, when the recommendation is close, but not quite right. This information may also be fed into a model for understanding what types of topics interest a user.

Recommendations may be rendered in many formats beyond conventional list-based format, including but not limited to representations of more image-driven formats such as those illustrated in FIGS. 6-7. Examples of the format of these image-driven recommendations include 1) pictures or messaging about the entity recommended, for instance a place, 2) pictures or messages associated with the type of entity, for instance a Chinese food for Panda Express, 3) pictures or messaging about users who like such a place, including but not limited to a) experts, b) celebrities, c) real friends, d) virtual friends, e) similar people, f) relevant users (for instance those will be deemed more attractive to a user) and f) the general population. For pictures or messaging about users who like an entity, this may include messaging examples such as 1) a popular entity, 2) a trending entity, 3) entity's liked by users who are similar to specific people, including the user receiving recommendations. Examples of pictures about users who like such recommendations may include 1) abstract images representing users interest, 2) photos of such people, 3) photos of avatars, 4) images representing a group or affiliation of the user, or 5) other representative images related to individuals.

FIG. 7 is an exemplary screenshot of a user interface 500 provided by the personalized recommendations system according to embodiments of the invention. The user interface 500 may provide discovery recommendations associated with entities. The discovery recommendations may be for products, service, or activities provided by the entity, or for the entity itself. For example, media object 510(a), displaying Chinese food, relates to a recommendation for a specific Chinese restaurant 540. This recommendation for the restaurant 540, and the corresponding media object 510(a), may be accompanied by a personalized explanation 530 of the recommendation. In this example, the image displaying Chinese food 510(a) corresponding to the recommendation for the specific Chinese restaurant 540, is based on a determination by the personalized recommendations system that the user likes Chinese food 530.

In other embodiments of the invention, a recommendation for an activity at an entity may be provided to the user. For example, media object 510(b), displaying a comedian, relates to a recommendation for a specific comedy club 540(b). The personalized explanation 530(b) provided to the user indicates that the personalized recommendation 540(b) was based on previous personal data, such as a status update from Facebook.

Other exemplary personalized recommendations may be based on global demographic data 560, for example. The personalized recommendations system, using the user's stored data from the personal profile or feedback data, may identify other users with similar demographic data and provide personalized recommendations based on the demographic data elements that align. Demographic data may include gender, race, location, age, or any other data related to a plurality of users. In other embodiments, the personalized recommendations may also be based on demographic, personal, or feedback data associated with a group of users having a relationship with the target user. For example, the group of users may be Facebook friends whom the target user interacts with the most, Twitter followers, or other relationships.

When making recommendations, there are many variations that the system will support. The recommendation does not need to be about an individual user, but rather, may be a recommendation for someone else, allowing a user to view the world through another person's preferences. Examples of this might include friends, experts, or celebrities. As a concrete example, a user might want to get recommendations for a bar in LA, as if they were 50 Cent, or recommendations for a coffee shop as if they were actually a friend of theirs, who is a coffee connoisseur. In addition, the recommendations do not have to be for a single individual, but could be for a group. For example, if two couples wanted to work out where to go eat, the system could take all four users as inputs, and determine a group recommendation ideal for all four people.

In other embodiments of the invention, personalized recommendations to the target user may be made based on another user (e.g., secondary user). The secondary user may be another user with a relationship to the target user, or a celebrity, such as Blake Lively, as shown in the personal recommendation 520. Additionally, the user interface 500 may comprise a query field 550 for the target user to enter in parameters, queries, or additional data to refine the personalized recommendations.

FIG. 8 is an exemplary screenshot of a user interface 800 provided by the personalized recommendations system according to embodiments of the invention. In the user interface 800, a set of personalized recommendations may be provided as a result of a search or query by the user. The user may enter a query into a search field 820, and optionally add a specific filter 830 to refine the search. A media object 810 may provide a background to the set of personalized recommendations and may be personalized to be associated with the set of personalized recommendations or with the target user. A personalized recommendation may include an entity 850, such as a restaurant, “Alpine Inn.” Entity meta-data 860, such as cuisine, price range, and distance, may also be displayed. Other entity meta-data 860 may be displayed as a personalized summary based on the target user. The personalized summary may also include statistics or other content 870, based on canonicalized entity data and canonicalized location data. For example, 870 displays “148 MENTIONS,” as an indicator of the entity's popularity to entice the target user to respond to the personalized recommendation. In other embodiments, data associated with other users having relationships with the target user may be displayed, as shown in 880, to entice the target user to respond and provide a feedback response to the provided personalized recommendation. For example, 880 shows a feedback message from another secondary user having a relationship with the target user, related to the personalized recommendation provided for “Los Altos Grill.”

In various embodiments, statistics may be provided about a recommendation to convince the user that the recommendation is relevant. This could be manifested in search results, browsing results, recommendation results, when the user gets more details about a result, or any combination. An example of illustrating a specific statistic is to discuss specific entities where the entity is referenced. To make this example more concrete, statistics about how many users have mentioned an entity (for overall popularity), or have mentioned an entity in the last week (for trending topics), may be presented to the user. While this could be for just a single service, such as the conversation in Facebook™ status updates, this could also be presented in an aggregated form across multiple services such as discussion on both Facebook™ and Twitter™, or across many blogs or news articles. It may also be filtered to make the results more relevant, for instance by only showing these statistics by a user's Facebook™ friends. These messages may also be segmented depending on the types of discussion, for instance by reviews, check-ins, and messages.

After a set of results have been determined, the system may allow for the user to explicitly filter or sort results based on criteria such as 1) popularity, 2) personalization, 3) social relevancy, 4) expertise, 5) time of day, or 6) location. The system may learn how to automatically sort and filter results by observing user behavior, automatically biasing toward the type of results the user most typically relies upon. This sorting and filtering may occur both before a search is sent to a system (for example, automatically formulating and/or modifying a query to narrow the search), or after the fact by a user to refine results. While the user makes these changes, it is also possible to have the client re-order the results, without re-requesting results from the server, possibly by sending more results than are rendered initially to the user. For example, if the user indicates the user would like to see more results like result Y, then additional results of that type that were sent to the client but not displayed initially would be displayed.

In addition to conventional list-based recommendations as illustrated in FIG. 8, personalized recommendations system also provide results that feel more organic. As illustrated in FIG. 7, personalized recommendations system may show different shaped containers of recommendations. The layout, number, and types of each set of recommendations may vary each time. These different presentations of recommendations are particularly relevant in conjunction with interactions on touch-driven interfaces, such as those for an iPhone™ or Android™ device. For example, with the rectangular block layout in FIG. 7, the user could interact with each rectangle as if it were a physical block that may be dragged across the screen, possibly interacting with other blocks. Other layouts may mimic the interaction that the image displayed on the screen represents. For example, showing a movie poster to represent a movie recommendation, which may be interacted with like a piece of paper, dragging it around the screen. As an extension of this concept, physical interactions may be layered on-top, including 1) blowing on the device to make the recommendations flutter away like leaves, 2) crinkling or tearing a recommendation that a user doesn't like, 3) shaking the application to get new recommendations, 4) swiping a result or set of results off that the user doesn't like, 5) tapping a result to get more information, 6) holding the finger down to get more information about an entity (for instance with a rollover effect or adding more menu options) 7) swiping a result to a nearby user. The application may also provide the ability to explore recommendations, for instance by searching for recommendations that are similar or different from a specific entity.

Depending on the type of recommendation, a user might be alerted to take action. The system may vary the invasiveness of an alert for a recommendation based on factors such as 1) the relevancy 2) a limited number or 3) a relevant deadline to use the recommendation. Different levels of invasiveness take the forms such as 1) in-app/on-web real-time notifications, 2) emails, 3) text messages, 4) phone calls, 5) instant messages, 6) integrations with other third-party products, 7) a message or notification when a user returns to an app, 8) a result surfaced based on a specific search. The time-sensitive alerts may be coupled with messages on why the user should act now involving concepts such as 1) limited number, 2) recommendation expiration, or 3) a relevant individual desiring to partake in the recommendation with a user.

The system may enable users to get a recommendation for something in the future, and may enable the user to share this with one or many social connections, for instance a friend on Facebook™. In turn, the social connection may provide feedback about the recommendation, all of which may be fed into a personalization engine. For a physical location, this might be a request to share the experience with the person, or to tell the system they will be going to a physical location, such that their friends may join them, but with no specific friend in mind. Such systems could recommend potential users to share the experience with.

Once recommendations have been made, a user might tell other people, who may not be users, about the experience they might have in the future, or are having in real-time. In addition to a conventional individual check-in, where a user publishes that they are attending an experience, in various embodiments personalized recommendations system also support group check-ins, where users may as a group, all participate in publishing that they are at a specific location to a social network or some other service. In addition to simultaneously publishing the fact, they may associate messages with their check-in describing the experience, and their thoughts or other sentiment about it, possibly associating other meta-data. These check-ins may appear in a disjointed fashion, for instance in everyone's Facebook™ newsfeed, or could appear in an aggregated fashion, where a single user leads the check-in (on Facebook™ this would be a status update), and other people's check-ins are comments or likes on the check-in.

There are many mechanisms for understanding who should be associated with a check-in automatically, using information such as GPS signal on a mobile device, and knowledge of the social graph of the individuals involved, through services such as Facebook™. In addition, physical interactions may be associated with a group check-in. For example, users could do a group check-in by all mimicking the motion of users making a toast with glasses of beer using their phone. They would achieve this by moving their phones toward the center of a circle, triggering an accelerometer hit on a phone. There are many other motions that could achieve this such as mimicking a high-five motion.

These physical gestures, may interact with many different sensors, perhaps even simultaneous interactions, including but not limited to the accelerometers, gyroscopes, the cameras, and microphones. The applications of these gestures could be applied to other mechanisms beyond group check-ins, such as requesting a new set of recommendations, performing an individual check-in, transmitting a message to a service like Facebook™, transmitting a SMS to a friend, or sending a recommendation to a friend. An example of a gesture to refresh results would be by shaking the phone. An example of a way to transmit a recommendation to a nearby friend would be by mimicking the lobbing of a ball, where the user holds their phone and “lobs” the recommendation to a nearby friend.

In embodiments of the invention, an entity associated with a recommendation may be a venue, defined to be any event, activity, or function, whether recurring or one-off, at a specific location. The venue may wish to run a promotion or advertisement for a physical place, the entire pipeline of inputting the location of a venue, to selecting an ad campaign, to monitoring an ad campaign's performance, to paying for an advertising campaign, may all take entity on a smart-phone. The user may denote the location in many ways including but not limited to 1) explicitly indicating some location within the venue, possibly using a mechanism such as GPS, 2) explicitly telling the system the exact boundaries of the establishment, possibly using a mechanism such as GPS, or 3) cross referencing a GPS location with a previously known list of locations nearby. The user responsible for the venue could also use an in-app application to run advertisements and deals, to attract clientele. These advertisements may or may not be configured to specify the desire to have the users appear 1) in real-time, 2) for a future time, or 3) with no time in mind.

The system could select the users, and find the proper incentives, including options such as deals and discounts, explicitly chosen by the venue, provide suggestions for the venue to accept, or automatically optimize the selection with no restaurant intervention. For example, if a restaurant owner is having a lull in customers, and wants 6 more users come to my pizza shop, the owner might be willing to pay for an ad to get users to show up right away, and may also be willing to provide $1.00 off pizza discount. In some embodiments, the owner would use a mobile phone application or website to make this request in real time. The owner could then check back 5 minutes later, and see that 4 users have redeemed the coupons, which will expire within 20 minutes, so the owner knows that users will be in the shop promptly. The cost of running the advertisement might automatically be added to the restaurant owner's bill by the personalized recommendations system.

The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the invention. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the invention. It is to be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.

Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, systems may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known processes, structures and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.

Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.

Moreover, as disclosed herein, the term “storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data.

Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

Further embodiments may be envisioned to one of ordinary skill in the art after reading this disclosure. In other embodiments, combinations or sub-combinations of the above disclosed invention may be advantageously made. The example arrangements of components are shown for purposes of illustration and it should be understood that combinations, additions, re-arrangements, and the like are contemplated in alternative embodiments of the present invention. Thus, while the invention has been described with respect to exemplary embodiments, one skilled in the art will recognize that numerous modifications are possible.

For example, the processes described herein may be implemented using hardware components, software components, and/or any combination thereof. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims and that the invention is intended to cover all modifications and equivalents within the scope of the following claims. 

1. A computer-implemented method for generating personalized recommendations for a target user based at least on stored data about the target user, the method comprising: obtaining, at a server computer, entity data from a plurality of data sources, wherein the entity data is associated with an entity in a plurality of entities, wherein the entity provides goods or services to the target user; storing the entity data at the server computer, wherein the entity data associated with the plurality of entities is stored in an entity database; merging, by the server computer, the entity data from the plurality of data sources; mapping, by the server computer, the entity data from the plurality of data sources to a corresponding entity; differentiating, by the server computer, the entity data from the plurality of data sources associated with the corresponding entity; determining, by the server computer, a relevance associated with the entity data and data source, wherein the relevance is determined by a computer process to cross-reference the entity data and data source; assigning, by the server computer, a weight to the entity data and the data source associated with the entity data based on the relevance, thereby canonicalizing the entity data; updating the entity database with the entity data associated with the corresponding entity; and generating, by the server computer, a set of personalized recommendations to the target user using the updated entity database.
 2. The method of claim 1, further comprising: obtaining, at the server computer, feedback data from a plurality of users, wherein the feedback data is associated to the target user in the plurality of users; obtaining, at the server computer, location data from an external data source in a plurality of data sources associated with the target user, wherein the location data is associated with an entity in a plurality of entities; storing the location data at the server computer, wherein location data associated with the plurality of entities is stored in the entity database; determining, by the server computer, an entity that is associated with the feedback data from the target user; determining, by the server computer, if the entity associated with the feedback data from the target user corresponds with an entity associated with location data in the entity database; mapping the entity associated with the feedback data to the corresponding entity associated with the location data, wherein if the entity associated with the feedback data from the target user does not correspond with an entity associated with location data in the entity database, the entity database is updated to include the entity associated with the feedback data from the target user; updating the entity database to include the feedback data from the target user associated the entity, with the location data associated with the corresponding entity; and generating a set of personalized recommendations to the target user based on the updated entity database.
 3. The method of claim 1, further comprising: obtaining, at the server computer, personal data from the plurality of data sources, wherein the personal data is associated with the target user in the plurality of users; storing the personal data at the server computer, wherein personal data associated with the plurality of users is stored in a user database; merging, by the server computer, the personal data from the plurality of data sources; mapping, by the server computer, the personal data from the plurality of data sources to the target user; updating the user database with the personal data and stored data associated with the target user; determining, at the server computer, whether an entity is associated with the personal data from the target user; determining, at the server computer, whether the entity associated with the personal data corresponds with an entity associated with location data in the entity database; mapping the entity associated with the personal data from the target user to the corresponding entity associated with the location data; determining, at the server computer, inferred location data based on the mapping; updating the entity database to include the inferred location data associated with the corresponding entity; creating a personal profile for the target user based on the personal data; analyzing, at the server computer, the personal data and stored data associated with the target user to determine a user-specific relevance; updating the personal profile of the target user with the user-specific relevance; and generating a set of personalized recommendations to the target user based on the updated personal profile of the user using the updated entity database.
 4. The method of claim 2, further comprising: determining, at the server computer, whether the feedback data relates to removing the entity and its associated location data from the location data database; and updating the location data database to remove the entity and its associated location data.
 5. The method of claim 2, wherein the location data includes geographical data identifying the location of the target user associated with the plurality of data sources.
 6. The method of claim 3, further comprising: categorizing the personal data associated with the target user into a category in a plurality of categories; assigning a weight to the category associated with the target user based on the user-specific relevance, stored data, and personal data associated with the target user; wherein in the plurality of categories each category has its own weight; and updating the personal profile of the target user with the categories and their assigned weights.
 7. The method of claim 6, further comprising: merging the personal data associated with the target user with personal data associated with the plurality of users; categorizing the personal data associated with the plurality of users into the category in a plurality of categories; cross-referencing the personal data associated with the plurality of users with the location data associated with the plurality of entities to determine a global relevance, wherein the global relevance is associated with the plurality of users; assigning a global weight to the category associated with the target user based on the global relevance, wherein in the plurality of categories each category has its own global weight; and updating the personal profile of the target user with the global relevance, and global weight assigned to the category.
 8. The method of claim 3, wherein the target user is a primary user, the method further comprising: analyzing, at the server computer, the personal profile of the primary user and personal profiles of at least one or more secondary users; cross-referencing, at the server computer, the personal profile of the primary user, with the personal profiles of the at least one or more secondary users; determining a relationship between the primary user and the at least one or more secondary users; determining a group relevance based on the relationship between the primary user and the at least one or more secondary users; and updating the personal profile of the primary user and the personal profiles of the at least one or more secondary users with the relationship and the group relevance.
 9. The method of claim 8, further comprising: assigning a group weight to the category associated with the primary user based on the group relevance, wherein in the plurality of categories each category has its own group weight; and updating the personal profiles of the primary user and the personal profiles of the at least one or more secondary users with the group weight.
 10. The method of claim 9, further comprising generating a set of group personalized recommendations for the primary user and the at least one or more secondary users.
 11. The method of claim 9, further comprising generating a set of personalized recommendations for the primary user based on an updated profile of a secondary user.
 12. A system for generating personalized recommendations for a target user based at least on stored data about the target user, the system comprising a server computer comprising a processor and a computer-readable medium, the computer-readable medium comprising code executable by the processor to perform a method, the method comprising: obtaining, at the server computer, entity data from a plurality of data sources, wherein the entity data is associated with an entity in a plurality of entities, wherein the entity provides goods or services to the target user; storing the entity data at the server computer, wherein the entity data associated with the plurality of entities is stored in an entity database; merging, by the server computer, the entity data from the plurality of data sources; mapping, by the server computer, the entity data from the plurality of data sources to a corresponding entity; differentiating, by the server computer, the entity data from the plurality of data sources associated with the corresponding entity; determining, by the server computer, a relevance associated with the entity data and data source, wherein the relevance is determined by a computer process to cross-reference the entity data and data source; assigning, by the server computer, a weight to the entity data and the data source associated with the entity data based on the relevance, thereby canonicalizing the entity data; updating the entity database with the entity data associated with the corresponding entity; and generating, by the server computer, personalized recommendations to the target user using the updated entity database.
 13. The system of claim 12, the method further comprising: obtaining, at the server computer, feedback data from a plurality of users, wherein the feedback data is associated to the target user in the plurality of users; obtaining, at the server computer, location data from an external data source in a plurality of data sources associated with the target user, wherein the location data is associated with an entity in a plurality of entities; storing the location data at the server computer, wherein location data associated with the plurality of entities is stored in the entity database; determining, by the server computer, an entity that is associated with the feedback data from the target user; determining, by the server computer, if the entity associated with the feedback data from the target user corresponds with an entity associated with location data in the entity database; mapping the entity associated with the feedback data to the corresponding entity associated with the location data, wherein if the entity associated with the feedback data from the target user does not correspond with an entity associated with location data in the entity database, the entity database is updated to include the entity associated with the feedback data from the target user; updating the entity database to include the feedback data from the target user associated the entity, with the location data associated with the corresponding entity; and generating a set of personalized recommendations to the target user based on the updated entity database.
 14. The system of claim 12, the method further comprising: obtaining, at the server computer, personal data from the plurality of data sources, wherein the personal data is associated with the target user in the plurality of users; storing the personal data at the server computer, wherein personal data associated with the plurality of users is stored in a user database; merging, by the server computer, the personal data from the plurality of data sources; mapping, by the server computer, the personal data from the plurality of data sources to the target user; updating the user database with the personal data and stored data associated with the target user; determining, at the server computer, whether an entity is associated with the personal data from the target user; determining, at the server computer, whether the entity associated with the personal data corresponds with an entity associated with location data in the entity database; mapping the entity associated with the personal data from the target user to the corresponding entity associated with the location data; determining, at the server computer, inferred location data based on the mapping; updating the entity database to include the inferred location data associated with the corresponding entity; creating a personal profile for the target user based on the personal data; analyzing, at the server computer, the personal data and stored data associated with the target user to determine a user-specific relevance; updating the personal profile of the target user with the user-specific relevance; and generating a set of personalized recommendations to the target user based on the updated personal profile of the user using the updated entity database.
 15. The system of claim 13, the method further comprising: determining, at the server computer, whether the feedback data relates to removing the entity and its associated location data from the location data database; and updating the location data database to remove the entity and its associated location data.
 16. The system of claim 13, wherein the location data includes geographical data identifying the location of the target user associated with the plurality of data sources.
 17. The system of claim 14, the method further comprising: categorizing the personal data associated with the target user into a category in a plurality of categories; assigning a weight to the category associated with the target user based on the user-specific relevance, stored data, and personal data associated with the target user; wherein in the plurality of categories each category has its own weight; and updating the personal profile of the target user with the categories and their assigned weights.
 18. The system of claim 17, further comprising: merging the personal data associated with the target user with personal data associated with the plurality of users; categorizing the personal data associated with the plurality of users into the category in a plurality of categories; cross-referencing the personal data associated with the plurality of users with the location data associated with the plurality of entities to determine a global relevance, wherein the global relevance is associated with the plurality of users; assigning a global weight to the category associated with the target user based on the global relevance, wherein in the plurality of categories each category has its own global weight; and updating the personal profile of the target user with the global relevance, and global weight assigned to the category.
 19. The method of claim 14, wherein the target user is a primary user, the method further comprising: analyzing, at the server computer, the personal profile of the primary user and personal profiles of at least one or more secondary users; cross-referencing, at the server computer, the personal profile of the primary user, with the personal profiles of the at least one or more secondary users; determining a relationship between the primary user and the at least one or more secondary users; determining a group relevance based on the relationship between the primary user and the at least one or more secondary users; and updating the personal profile of the primary user and the personal profiles of the at least one or more secondary users with the relationship and the group relevance.
 20. The method of claim 19, further comprising: assigning a group weight to the category associated with the primary user based on the group relevance, wherein in the plurality of categories each category has its own group weight; and updating the personal profiles of the primary user and the personal profiles of the at least one or more secondary users with the group weight.
 21. The method of claim 20, further comprising generating a set of group personalized recommendations for the primary user and the at least one or more secondary users.
 22. The method of claim 20, further comprising generating a set of personalized recommendations for the primary user based on an updated profile of a secondary user.
 23. The method of claim 3, further comprising: determining a location of the target user based on the location data and personal data from the plurality of data sources associated with the target user; and alerting the target user with a personalized recommendation from the set of personalized recommendations, wherein the personalized recommendation includes an entity, wherein the entity is within close proximity of the location of the target user.
 24. The system of claim 14, the method further comprising: determining a location of the target user based on the location data and personal data from the plurality of data sources associated with the target user; and alerting the target user with a personalized recommendation from the set of personalized recommendations, wherein the personalized recommendation includes an entity, wherein the entity is within close proximity of the location of the target user.
 25. The method of claim 8, the method further comprising: analyzing the location data associated with the target user, and the location data associated with the at least one or more secondary users; determining whether the target user and the at least one or more secondary users are in the same location; and updating the personal profile of the target user and the personal profiles of the at least one or more secondary users with the analysis of the same location data.
 26. The system of claim 19, the method further comprising: analyzing the location data associated with the target user, and the location data associated with the at least one or more secondary users; determining whether the target user and the at least one or more secondary users are in the same location; and updating the personal profile of the target user and the personal profiles of the at least one or more secondary users with the analysis of the same location data. 